#include "gtkmain.h"
#include "gtkmarshalers.h"
#include "gtkorientableprivate.h"
-#include "gtkpressandholdprivate.h"
#include "gtkprivate.h"
#include "gtkscale.h"
#include "gtkscrollbar.h"
/* Whether we're doing fine adjustment */
guint zoom : 1;
guint zoom_set : 1;
- GtkPressAndHold *press_and_hold;
+ GtkGesture *long_press_gesture;
GtkScrollType autoscroll_mode;
guint autoscroll_id;
gtk_range_remove_step_timer (range);
- g_clear_object (&priv->press_and_hold);
+ if (priv->long_press_gesture)
+ {
+ gtk_widget_remove_controller (widget, GTK_EVENT_CONTROLLER (priv->long_press_gesture));
+ g_clear_object (&priv->long_press_gesture);
+ }
if (priv->adjustment)
{
gboolean zoom_set)
{
if (zoom_set)
- g_clear_object (&range->priv->press_and_hold);
+ {
+ gtk_widget_remove_controller (GTK_WIDGET (range),
+ GTK_EVENT_CONTROLLER (range->priv->long_press_gesture));
+ g_clear_object (&range->priv->long_press_gesture);
+ }
range->priv->zoom_set = zoom_set;
}
}
static void
-hold_action (GtkPressAndHold *pah,
- gint x,
- gint y,
- GtkRange *range)
+hold_action (GtkGestureLongPress *gesture,
+ gdouble x,
+ gdouble y,
+ GtkRange *range)
{
update_zoom_state (range, TRUE);
update_zoom_set (range, TRUE);
}
else
{
- if (!priv->press_and_hold)
+ if (!priv->long_press_gesture)
{
- gint drag_threshold;
-
- g_object_get (gtk_widget_get_settings (widget),
- "gtk-dnd-drag-threshold", &drag_threshold,
- NULL);
- priv->press_and_hold = gtk_press_and_hold_new ();
-
- g_object_set (priv->press_and_hold,
- "drag-threshold", drag_threshold,
- "hold-time", ZOOM_HOLD_TIME,
- NULL);
-
- g_signal_connect (priv->press_and_hold, "hold",
+ priv->long_press_gesture =
+ gtk_gesture_long_press_new (widget);
+ gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (priv->long_press_gesture),
+ FALSE);
+ gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (priv->long_press_gesture), 1);
+ gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (priv->long_press_gesture),
+ GTK_PHASE_NONE);
+
+ g_signal_connect (priv->long_press_gesture, "pressed",
G_CALLBACK (hold_action), range);
}
- gtk_press_and_hold_process_event (priv->press_and_hold, (GdkEvent *)event);
+ gtk_event_controller_handle_event (GTK_EVENT_CONTROLLER (priv->long_press_gesture),
+ (const GdkEvent*) event);
}
}
{
if (priv->grab_location == MOUSE_SLIDER)
{
- if (priv->press_and_hold)
- gtk_press_and_hold_process_event (priv->press_and_hold, (GdkEvent *)event);
+ if (priv->long_press_gesture)
+ gtk_event_controller_handle_event (GTK_EVENT_CONTROLLER (priv->long_press_gesture),
+ (const GdkEvent*) event);
}
stop_scrolling (range);
if (priv->grab_location == MOUSE_SLIDER)
{
- if (!priv->zoom_set && priv->press_and_hold != NULL)
- gtk_press_and_hold_process_event (priv->press_and_hold, (GdkEvent *)event);
+ if (!priv->zoom_set && priv->long_press_gesture != NULL)
+ gtk_event_controller_handle_event (GTK_EVENT_CONTROLLER (priv->long_press_gesture),
+ (const GdkEvent*) event);
update_autoscroll_mode (range);
if (priv->autoscroll_mode == GTK_SCROLL_NONE)